home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ABUSESRC.ZIP
/
AbuseSrc
/
abuse
/
inc
/
extend.hpp
< prev
next >
Wrap
C/C++ Source or Header
|
1996-01-24
|
5KB
|
158 lines
#ifndef EXTEND_HPP_
#define EXTEND_HPP_
#define NNET_HISTSIZE 10
#define FLAG_JUST_HIT 1
#define FLAG_JUST_BLOCKED 2
#define FLOATING_FLAG 4
#define KNOWN_FLAG 8
#include "jmalloc.hpp"
#include "macs.hpp"
#include "morpher.hpp"
#include "chars.hpp"
#include "lisp.hpp"
class view;
class game_object;
class light_source;
class simple_object
{
public :
schar Fade_dir;
uchar Fade_count,Fade_max;
uchar Flags,grav_on,targetable_on;
long Xvel,Yvel,Xacel,Yacel;
uchar Fx,Fy,Fxvel,Fyvel,Fxacel,Fyacel;
uchar Aitype;
ushort Aistate,Aistate_time;
unsigned short Hp,Mp,Fmp;
schar Frame_dir;
uchar tobjs,tlights;
game_object **objs,*link;
light_source **lights;
view *Controller;
morph_char *mc;
int total_vars();
char *var_name(int x);
int var_type(int x);
void set_var(int x, ulong v);
long get_var(int x);
// leave these public, so I don't have monster code changes.
simple_object();
long x,y,
last_x,last_y; // used for frame interpolation on fast machines
schar direction,active;
ushort otype;
character_state state;
short current_frame;
int targetable() { return targetable_on; }
int gravity() { return grav_on; }
int floating() { return flags()&FLOATING_FLAG; }
int keep_ai_info() { return 1; }
uchar flags() { return Flags; }
long xvel() { return Xvel; }
long yvel() { return Yvel; }
long xacel() { return Xacel; }
long yacel() { return Yacel; }
uchar fx() { return Fx; }
uchar fy() { return Fy; }
uchar fxvel() { return Fxvel; }
uchar fyvel() { return Fyvel; }
uchar fxacel() { return Fxacel; }
uchar fyacel() { return Fyacel; }
uchar sfx() { return Fx; } // x & y should always be positive
uchar sfy() { return Fy; }
uchar sfxvel() { if (Xvel>=0) return Fxvel; else return -Fxvel; }
uchar sfyvel() { if (Yvel>=0) return Fyvel; else return -Fyvel; }
uchar sfxacel() { if (Xacel>=0) return Fxacel; else return -Fxacel; }
uchar sfyacel() { if (Yacel>=0) return Fyacel; else return -Fyacel; }
uchar aitype() { return Aitype; }
ushort aistate() { return Aistate; }
ushort aistate_time() { return Aistate_time; }
ushort hp() { return Hp; }
ushort mp() { return Mp; }
ushort fmp() { return Fmp; }
schar fade_dir() { return Fade_dir; }
schar frame_dir() { return Frame_dir; }
uchar fade_count() { return Fade_count; }
uchar fade_max() { return Fade_max; }
uchar total_objects() { return tobjs; }
uchar total_lights() { return tlights; }
morph_char *morph_status() { return mc; }
light_source *get_light(int x)
{ if (x>=tlights) { lbreak("bad x for light\n"); exit(0); } return lights[x]; }
game_object *get_object(int x)
{ if (x>=tobjs) { lbreak("bad x for object\n"); exit(0); } return objs[x]; }
view *controller() { return Controller; }
void set_targetable(uchar x) { targetable_on=x; }
void set_flags(uchar f) { Flags=f; }
void set_xvel(long xv) { Xvel=xv; }
void set_yvel(long yv) { Yvel=yv; }
void set_xacel(long xa) { Xacel=xa; }
void set_yacel(long ya) { Yacel=ya; }
void set_fx(uchar x) { Fx=x; }
void set_fy(uchar y) { Fy=y; }
void set_fxvel(uchar xv) { Fxvel=abs(xv); }
void set_fyvel(uchar yv) { Fyvel=abs(yv); }
void set_fxacel(uchar xa) { Fxacel=abs(xa); }
void set_fyacel(uchar ya) { Fyacel=abs(ya); }
void set_aitype(uchar t) { Aitype=t; }
void set_aistate(ushort s) { Aistate=s; }
void set_aistate_time(ushort t) { Aistate_time=t; }
void set_hp(ushort h) { Hp=h; }
void set_mp(ushort m) { Mp=m; }
void set_fmp(ushort m) { Fmp=m; }
void set_fade_count(uchar f) { Fade_count=f; }
void set_fade_max(uchar m) { Fade_max=m; }
void set_fade_dir(schar d) { Fade_dir=d; }
void set_frame_dir(schar d) { Frame_dir=d; }
void add_light(light_source *ls);
void add_object(game_object *o);
void remove_object(game_object *o);
void remove_light(light_source *ls);
void set_morph_status(morph_char *mc);
void set_controller(view *v) { Controller=v; }
void set_gravity(int x) { grav_on=x; }
void set_floating(int x)
{ if (x)
set_flags(flags()|FLOATING_FLAG);
else
set_flags(flags()&(0xff-FLOATING_FLAG));
}
void clean_up();
} ;
extern simple_object default_simple;
#endif